{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"https://raw.githubusercontent.com/Qiskit/qiskit-tutorials/master/images/qiskit-heading.png\" alt=\"Qiskit\" width=\"500 px\" align=\"left\">\n",
    "<img src=\"images/qubit-chain-logo.png\" alt=\"Qubit Chain\" align=\"right\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# _*State Distribution in Qubit Chains*_\n",
    "## _*(Models for Effective Simulation)*_\n",
    "\n",
    "This tutorial is partially based on _A.Yu.Vlasov_, \"Effective simulation of state distribution in qubit chains\",\n",
    "[Quantum Inf. Process. **17** 269 (2018)](https://rdcu.be/5CIK); [arXiv:1708.07439](https://arxiv.org/abs/1708.07439) \n",
    "\n",
    "\n",
    "\n",
    "### Contributor \n",
    "Alexander Yu. Vlasov\n",
    "\n",
    "***"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introduction\n",
    "\n",
    "State transport in quantum chains is relevant both for quantum computations and communications. \n",
    "\n",
    "Two kinds of quantum chains are considered here:\n",
    "\n",
    "+ [Scalar chain](#scalar_chain) includes $N$ nodes with $N$ quantum states.\n",
    "\n",
    "+ [Qubit chain](#qubit_chain) includes $n$ qubits with $2^n$ quantum states.\n",
    "\n",
    "The tutorial is addressed to a special model with scalar and qubit chains of _the same length_ $N=n$.\n",
    "In principle, $n$ qubits could be used for modeling of exponentially bigger scalar chain with $N=2^n$,\n",
    "but such approach is not discussed here.\n",
    "\n",
    "The much smaller scalar chain with $N=n$ is used instead due to useful and interesting relations\n",
    "between both kinds for special set of quantum gates.\n",
    "Such approach let us consider simple effective models available for classical computer. \n",
    "The set of gates considered for such a purpose is simplified subset of so-called _matchgates_\n",
    "also related with so-called Majorana modes and some other models.\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Scalar Chain <a id='scalar_chain'></a>\n",
    "\n",
    "<img src=\"images/line_circs_site1.png\" alt=\"Scalar Chain\">\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[Scalar chain](scalar_chain.ipynb) is a simpler auxiliary model. It is widely used for description of quantum walks. See more in [notebook](scalar_chain.ipynb) about scalar chains, quantum bots, coined and staggered quantum walks.\n",
    "The chain may be [modeled](scalar_chain_mod.ipynb) using standard packages such as NumPy even without Qiskit \n",
    "used further for  qubit chain. Notebooks include only simulations of scalar chain without discussion about\n",
    "hardware realization."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Qibit Chain <a id='qubit_chain'></a>\n",
    "\n",
    "<img src=\"images/line_qubits.png\" alt=\"Qubit Chain\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[Qubit chain](qubit_chain.ipynb) is a main model considered here. The model uses Qiskit together with NumPy. \n",
    "Explanation of simulation may be found in [notebook about qubit chain](qubit_chain.ipynb),\n",
    "but some ideas of quantum walks is better illustrated in [notebook about scalar chain](scalar_chain.ipynb)\n",
    "mentioned above.\n",
    "Two different methods of simulation with qubit chain let us draw distributions both for [final state of walk](qubit_chain_mod.ipynb) and Quantum Spheres for [all steps of walk](qubit_chain_mod_many.ipynb).\n",
    "The notebooks also include only simulation, but possibility of modeling with Qiskit on real hardware \n",
    "here looks more natural than for example with scalar chain, yet it should be discussed elsewhere.\n",
    " \n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
